home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok56 / m2maker / txt / lsoptions.mod < prev    next >
Text File  |  1993-11-04  |  5KB  |  154 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.    m2Maker
  3.   :Author.     Thomas Stolze
  4.   :Address.    Goslarsche Str. 32, 3000 Hannover 21, Germany
  5.   :Phone.      (0)511 / 75 10 77
  6.   :Version.    V2.0
  7.   :Date.       10-Nov-90
  8.   :Copyright.  Shareware
  9.   :Language.   Modula-2
  10.   :Translator. M2Amiga V3.32d
  11.   :Contents.   Programming Utility.
  12.   :Remark.     Supports the M2Amiga System (C) by A+L AG Switzerland
  13. ---------------------------------------------------------------------------*)
  14.  
  15. IMPLEMENTATION MODULE LSOptions;
  16.  
  17. IMPORT String;
  18.  
  19. FROM Arts          IMPORT Assert;
  20. FROM FileRequester IMPORT LoadDir;
  21. FROM FileSystem    IMPORT Close,File,Lookup,ReadBytes,ReadChar,Response,
  22.                           WriteBytes,WriteChar;
  23. FROM InitIntuition IMPORT prgPtr,PrintStatus;
  24. FROM InstallOptions IMPORT ResidentCompiler,ResidentLinker,
  25.                ResidentEditor,InstallDebug,InstallPool,
  26.                InstallM2Ohm;
  27. FROM IntuitionD    IMPORT GadgetFlags,GadgetFlagSet,PropInfoPtr,
  28.                           MenuItemFlags,MenuItemFlagSet;
  29. FROM IntuitionL    IMPORT ClearMenuStrip,RefreshGList,SetMenuStrip;
  30. FROM Routines      IMPORT GetDosErr,Project,SwitchGadget,InteractiveCompiler,
  31.               InclChecked,ExclChecked;
  32. FROM SYSTEM        IMPORT ADR;
  33.  
  34. CONST version = 3;
  35.  
  36. PROCEDURE SaveOptions(save : ARRAY OF CHAR);
  37. VAR file   : File;
  38.     i,len  : INTEGER;
  39.     actual : LONGINT;
  40.     bool   : BOOLEAN;
  41.     ptr    : PropInfoPtr;
  42.  
  43. BEGIN
  44.   Lookup(file,save,1024,TRUE);
  45.   IF file.res = done THEN
  46.      WriteChar(file,CHR(version));
  47.      ptr:=ADR(prgPtr^.FR.datas^.GadgetArray[0].specialInfo);
  48.      WriteBytes(file,ADR(ptr^.vertPot),SIZE(ptr^.vertPot),actual);
  49.      FOR i:=0 TO 16 DO
  50.        len:=String.Length(prgPtr^.BufferString[i])+1; WriteChar(file,CHR(len));
  51.          WriteBytes(file,ADR(prgPtr^.BufferString[i]),len,actual);
  52.      END;
  53.      len:=String.Length(prgPtr^.FR.dirPath)+1; WriteChar(file,CHR(len));
  54.        WriteBytes(file,ADR(prgPtr^.FR.dirPath),len,actual);
  55.      len:=String.Length(prgPtr^.FR.file)+1; WriteChar(file,CHR(len));
  56.        WriteBytes(file,ADR(prgPtr^.FR.file),len,actual);
  57.      len:=String.Length(prgPtr^.FR.patternStr)+1; WriteChar(file,CHR(len));
  58.        WriteBytes(file,ADR(prgPtr^.FR.patternStr),len,actual);
  59.  
  60.      ClearMenuStrip(prgPtr^.window);
  61.      FOR i:=15 TO 17 DO
  62.          bool:=(checked IN prgPtr^.MenuArray[i].flags);
  63.          WriteBytes(file,ADR(bool),SIZE(BOOLEAN),actual);
  64.      END;
  65.      FOR i:=25 TO 30 DO
  66.          bool:=(checked IN prgPtr^.MenuArray[i].flags);
  67.          WriteBytes(file,ADR(bool),SIZE(BOOLEAN),actual);
  68.      END;
  69.      Assert(SetMenuStrip(prgPtr^.window,prgPtr^.menuStripPtr),
  70.              ADR("Menu not initialised"));
  71.      bool:=(selected IN prgPtr^.GadgetArray[14].flags);
  72.       WriteBytes(file,ADR(bool),SIZE(BOOLEAN),actual);
  73.      bool:=(selected IN prgPtr^.GadgetArray[16].flags);
  74.       WriteBytes(file,ADR(bool),SIZE(BOOLEAN),actual);
  75.   END;
  76.   Close(file); GetDosErr;
  77. END SaveOptions;
  78.  
  79. PROCEDURE LoadOptions(load : ARRAY OF CHAR);
  80. VAR file   : File;
  81.     i      : INTEGER;
  82.     actual : LONGINT;
  83.     bool   : BOOLEAN;
  84.     chr    : CHAR;
  85.     ptr    : PropInfoPtr;
  86. BEGIN
  87.   Lookup(file,load,1024,FALSE);
  88.   IF file.res = done THEN
  89.      ReadChar(file,chr);
  90.      IF (INTEGER(chr) = version) THEN
  91.         ptr:=ADR(prgPtr^.FR.datas^.GadgetArray[0].specialInfo);
  92.         ReadBytes(file,ADR(ptr^.vertPot),SIZE(ptr^.vertPot),actual);
  93.         FOR i:=0 TO 16 DO
  94.             ReadChar(file,chr);
  95.             ReadBytes(file,ADR(prgPtr^.BufferString[i]),INTEGER(chr),actual);
  96.         prgPtr^.BufferString[i,INTEGER(chr)]:=00C;
  97.         END;
  98.         RefreshGList(ADR(prgPtr^.GadgetArray[0]),prgPtr^.window,NIL,4);
  99.  
  100.         ReadChar(file,chr);
  101.           ReadBytes(file,ADR(prgPtr^.FR.dirPath),INTEGER(chr),actual);
  102.             prgPtr^.FR.dirPath[INTEGER(chr)]:=00C;
  103.         ReadChar(file,chr);
  104.           ReadBytes(file,ADR(prgPtr^.FR.file),INTEGER(chr),actual);
  105.             prgPtr^.FR.file[INTEGER(chr)]:=00C;
  106.         ReadChar(file,chr);
  107.           ReadBytes(file,ADR(prgPtr^.FR.patternStr),INTEGER(chr),actual);
  108.             prgPtr^.FR.patternStr[INTEGER(chr)]:=00C;
  109.         RefreshGList(ADR(prgPtr^.GadgetArray[21]),prgPtr^.window,NIL,10);
  110.  
  111.         ClearMenuStrip(prgPtr^.window);
  112.         FOR i:=15 TO 17 DO
  113.             ReadBytes(file,ADR(bool),SIZE(BOOLEAN),actual);
  114.             IF bool THEN
  115.                INCL(prgPtr^.MenuArray[i].flags,checked);
  116.             ELSE
  117.                EXCL(prgPtr^.MenuArray[i].flags,checked);
  118.             END;
  119.         END;
  120.         FOR i:=25 TO 30 DO
  121.             ReadBytes(file,ADR(bool),SIZE(BOOLEAN),actual);
  122.             IF bool THEN
  123.                INCL(prgPtr^.MenuArray[i].flags,checked);
  124.             ELSE
  125.                EXCL(prgPtr^.MenuArray[i].flags,checked);
  126.             END;
  127.         END;
  128.         Assert(SetMenuStrip(prgPtr^.window,prgPtr^.menuStripPtr),
  129.                 ADR("Menu not initialised"));
  130.  
  131.        ReadBytes(file,ADR(bool),SIZE(BOOLEAN),actual); SwitchGadget(bool,14);
  132.        ReadBytes(file,ADR(bool),SIZE(BOOLEAN),actual); SwitchGadget(bool,16);
  133.      ELSE
  134.        PrintStatus("m2Maker.cfg not readable !");
  135.      END;
  136.   ELSE
  137.     PrintStatus("m2Maker.cfg not found !");
  138.     FOR i:=0 TO 15 DO prgPtr^.BufferString[i,0]:=00C; END;
  139.   END;
  140.   Close(file); GetDosErr;
  141.   LoadDir(ADR(prgPtr^.FR));
  142.   InstallDebug;
  143.   InstallM2Ohm;
  144.   ResidentCompiler;
  145.   ResidentLinker;
  146.   ResidentEditor;
  147.   InstallPool;
  148.   InteractiveCompiler;
  149.  
  150. END LoadOptions;
  151.  
  152. BEGIN
  153. END LSOptions.
  154.